package com.qf.test.test.factory;

import java.util.Properties;

/**
 * 自定义bean工厂
 */
public class MyBeanFactory {
    private Properties properties=new Properties();

    /**
     * 无参构造
     */
    public MyBeanFactory() {
    }
    public MyBeanFactory(String config)throws Exception{
        //通过流根据配置文件的名字和路径  读取配置到properties对象中
        properties.load(MyBeanFactory.class.getResourceAsStream(config));
    }

    /**
     * 获取java对象  也就是javaBean对象  对象由这个工厂产生
     * @param beanName
     * @return
     * @throws Exception
     */
    public Object getBean(String beanName) throws Exception{
        //获取类的路径  也就是实现类的全限定名
        String classPath = properties.getProperty(beanName);
        //2.判断路径是否为空  如果为空不在使用反射技术
        if(classPath!=null){
            //3.如果为空纳闷使用反射鸡舍的类加载对象
            Class clazz = Class.forName(classPath);
            //4.获取对象的实例返回
            return clazz.newInstance();
        }
        //5如果为空返回null

        return null;
    }
}
